Package com.apps.ubc.cc.controller

Source Code of com.apps.ubc.cc.controller.RegisterFormController

package com.apps.ubc.cc.controller;

/*
*
* @author Brandon Wong
*/
import com.apps.datastore.AccountInformationDatastore;
import com.apps.datastore.dao.AccountObject;
import com.apps.datastore.dao.ContactInformationObject.CARRIER;
import com.apps.utils.BCryptUtils;
import com.apps.utils.EmailUtils;
import com.apps.outgoing.AccountActivation;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.io.IOException;
import java.math.BigInteger;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class RegisterFormController extends HttpServlet {

  AccountInformationDatastore d = new AccountInformationDatastore();
  private SecureRandom random = new SecureRandom();
  public final int length = 15;
  private String email;
  private String password;
  private String passwordAgain;
 
  public void doGet(HttpServletRequest req, HttpServletResponse resp){
    try {
      resp.sendRedirect("/register.jsp");
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  public void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws IOException {
    email = req.getParameter("username").toLowerCase();
    password = req.getParameter("password");
    passwordAgain = req.getParameter("confirmation");
    if(!EmailUtils.isValidEmail(email)){
      resp.sendRedirect("/debug.jsp?msg=invalid_email");
    }
    else if (password.equals(passwordAgain)) {
      String authKey = randomStringGenerator();
      if (this.signup(email, password, authKey)) {
        // send an email with the random String
        // and notify it's all good :)
        AccountActivation a = new AccountActivation();
        a.sendVerification(email,authKey);
       
        resp.sendRedirect("/debug.jsp?msg=activation_email_sent");
      } else {
        // DUPLICATE USERNAME!!
        resp.sendRedirect("/debug.jsp?msg=registration_dupe_username");
      }

    } else {
      //Passwords are not identical
      resp.sendRedirect("/debug.jsp?msg=registration_pw_not_identical");
    }

  }

  private String randomStringGenerator() {
    MessageDigest m;
    try {
      m = MessageDigest.getInstance("MD5");
      String randomString = nextSessionId();
      m.update(randomString.getBytes(), 0, randomString.length());
      return new BigInteger(1,m.digest()).toString(16);

    } catch (NoSuchAlgorithmException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    return "";
  }

  private boolean signup(String username, String password, String randomString) {

    String encryptedPassword = BCryptUtils.hashpw(password,
        BCryptUtils.gensalt());
    boolean result = false;

    if (!d.checkAccountExist(username)) {

      AccountObject obj = new AccountObject(username,
          encryptedPassword, false, randomString, 1, "",CARRIER.NULL);

      result = d.addAccount(obj);

    }
    return result;
  }

  public String nextSessionId() {
    return new BigInteger(130, random).toString(length);
  }

}
TOP

Related Classes of com.apps.ubc.cc.controller.RegisterFormController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.